﻿using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using DevExpress.XtraReports.UI;
using System.Collections.Generic;
using ThanNhanTao.Server.Entities;
using ThanNhanTao.Server;
using ThanNhanTao.Server.Enum;
using ThanNhanTao.ListTemp;

namespace ThanNhanTao.Report
{
    public partial class rptPhieuThanhToanNoiTruMain : DevExpress.XtraReports.UI.XtraReport
    {
        #region Fields

        int stt;
        List<PhieuThanhToanNoiTruEntities> listPhieuThanhToanEntities;

        #endregion

        public rptPhieuThanhToanNoiTruMain(List<PhieuThanhToanNoiTruEntities> listPhieuThanhToanEntities)
        {
            InitializeComponent();
            this.listPhieuThanhToanEntities = listPhieuThanhToanEntities;
        }

        public void BindReportHeader(BenhNhan benhNhan)
        {
            xrHoTen.Text = benhNhan.Ho + " " + benhNhan.Ten;
            //xrNgaySinh.Text =
            if (benhNhan.GioiTinh)
                xrNam.Text = "X";
            else
                xrNu.Text = "X";
            xrDiaChi.Text = benhNhan.DiaChi;
            if(!benhNhan.LaBHYT)
                xrKhongCoBHYT.Text = "X";
            else
            {
                xrCoBHYT.Text = "X";
                xrGiaTriTuDen.Text = string.Format("từ {0} đến {1}", benhNhan.TuNgay.Value.ToString("dd/MM/yyyy")
                                                                   , benhNhan.DenNgay.Value.ToString("dd/MM/yyyy"));
                if (!string.IsNullOrEmpty(benhNhan.SoBHYT))
                {
                    string soBHYT = benhNhan.SoBHYT;
                    xrMaTheBHYT1.Text = soBHYT.Substring(0, 2);
                    xrMaTheBHYT2.Text = soBHYT.Substring(2, 1);
                    xrMaTheBHYT3.Text = soBHYT.Substring(3, 2);
                    xrMaTheBHYT4.Text = soBHYT.Substring(5, 2);
                    xrMaTheBHYT5.Text = soBHYT.Substring(7, 3);
                    xrMaTheBHYT6.Text = soBHYT.Substring(10, 5);
                    if (soBHYT.IndexOf("-") > 0)
                        xrMaSoCoSoDangKyKCBBHYT.Text = soBHYT.Substring(soBHYT.IndexOf("-") + 1);
                }
            }
            if (benhNhan.Dm_ChanDoan != null)
            {
                xrChanDoan.Text = benhNhan.Dm_ChanDoan.TenChanDoan;
                xrMaBenh.Text = benhNhan.MaChanDoan;
            }
        }

        public void BindReportFooter()
        {
            //xrNgayKhamBenh.Text = String.Format("Ngày  {0}  tháng  {1}  năm  {2}", ngayYeuCau.Day, ngayYeuCau.Month, ngayYeuCau.Year);
            //xrNgayGiamDinh.Text = String.Format("Ngày  {0}  tháng  {1}  năm  {2}", ngayYeuCau.Day, ngayYeuCau.Month, ngayYeuCau.Year);
            xrNgayKhamBenh.Text = "Ngày....tháng....năm......";
            xrNgayGiamDinh.Text = "Ngày....tháng....năm......"; ;
        }

        public void BindDetail()
        {
            colTenLoaiYeuCau.DataBindings.Add("Text", DataSource, "TenLoaiYeuCau");
            colDetailThanhTien.DataBindings.Add("Text", DataSource, "CongThanhTien","{0:#,##0}");
        }

        public void BindGroupFooter(decimal tongCongThanhTien, decimal tongCongQuyBHYT, decimal tongCongKhac, decimal tongCongNguoiBenh)
        {
            colTongCongThanhTien.Text = tongCongThanhTien.ToString("#,##0");
            //colTongCongQuyBHYT.Text = tongCongQuyBHYT.ToString();
            //colTongCongKhac.Text = tongCongKhac.ToString();
            //colTongCongNguoiBenh.Text = tongCongNguoiBenh.ToString();
        }

        private void Detail_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            stt++;
            colSTT.Text = stt + ".";
            colDetailSttTong.Text = stt.ToString();

            string maLoaiYeuCau = string.Empty;
            if (this.GetCurrentColumnValue("MaLoaiYeuCau") != null)
                maLoaiYeuCau = GetCurrentColumnValue("MaLoaiYeuCau").ToString();
            List<PhieuThanhToanNoiTruEntities> listThanhToanTheoLoai = listPhieuThanhToanEntities.FindAll(u => u.MaLoaiYeuCau == maLoaiYeuCau);
            if (maLoaiYeuCau == EnumMaLoaiYeuCau.ThuocDichTruyen || maLoaiYeuCau == EnumMaLoaiYeuCau.VatTuTieuHao) 
            {
                rptPhieuThanhToanNoiTruDetailPhanLoaiBHYT detailThuocDichTruyen = new rptPhieuThanhToanNoiTruDetailPhanLoaiBHYT(listThanhToanTheoLoai);
                xrSubreportDetail.ReportSource = detailThuocDichTruyen;
                rptPhieuThanhToanNoiTruDetailPhanLoaiBHYT reportDetailThuocDT = (rptPhieuThanhToanNoiTruDetailPhanLoaiBHYT)xrSubreportDetail.ReportSource;
                reportDetailThuocDT.DataSource = CreateListPhanLoaiTrongYeuCau(maLoaiYeuCau); //Bind danh sách loại yêu cầu
                reportDetailThuocDT.BindPhanLoai(stt + "."); //thiết lập hiển thị
            }
            else
            {
                rptPhieuThanhToanNoiTruDetail detail = new rptPhieuThanhToanNoiTruDetail();
                xrSubreportDetail.ReportSource = detail;
                rptPhieuThanhToanNoiTruDetail reportDetail = (rptPhieuThanhToanNoiTruDetail)xrSubreportDetail.ReportSource;
                reportDetail.DataSource = listThanhToanTheoLoai;
                reportDetail.BindData();
            }
            
        }

        public List<PhanLoaiTrongYeuCau> CreateListPhanLoaiTrongYeuCau(string maLoaiYeuCau)
        {
            List<PhanLoaiTrongYeuCau> listPhanLoaiTrongYeuCau = new List<PhanLoaiTrongYeuCau>();
            PhanLoaiTrongYeuCau phanLoai1 = new PhanLoaiTrongYeuCau
            {
                PhanLoaiBHYT = (byte)0,
                MoTa = "1. Trong danh mục BHYT:"
            };
            listPhanLoaiTrongYeuCau.Add(phanLoai1);
            PhanLoaiTrongYeuCau phanLoai2 = new PhanLoaiTrongYeuCau
            {
                PhanLoaiBHYT = (byte)1,
                MoTa = "2. Ngoài danh mục BHYT:"
            };
            listPhanLoaiTrongYeuCau.Add(phanLoai2);
            if (maLoaiYeuCau == EnumMaLoaiYeuCau.ThuocDichTruyen)
            {
                PhanLoaiTrongYeuCau phanLoai3 = new PhanLoaiTrongYeuCau
                {
                    PhanLoaiBHYT = (byte)2,
                    MoTa = "3. Thuốc điều trị ung thư, chống thải ghép ngoài danh mục:"
                };
                listPhanLoaiTrongYeuCau.Add(phanLoai3);
            }
            return listPhanLoaiTrongYeuCau;
        }
    }

    
}
